User interface disambiguation

ABSTRACT

Systems, methods, and computer programming products for alleviating ambiguity amongst the terms and language displayed by the user interface of software products and services. The disclosed solutions catalog terms displayed by the UI of software and services and identify where overlapping terms with the same or substantially similar term names are presented by the UI but have different meanings than the software most familiar to the user. Natural language processing is leveraged to derive meanings of software terms using the context of the surrounding words and text elements within the UI, as well as product documentation, error messages, sentiment and other textual clues. Ambiguity among overlapping terms is alleviated by modifying the UI, highlighting differences in term definitions from the software or services a user is most familiar with using, and updating the UI in a manner that differentiates the overlapping terms displayed by accessed products or services.

TECHNICAL FIELD

The present disclosure relates generally to the field of naturallanguage processing, user interfaces, and application management, andmore particularly to alleviating ambiguity among overlapping terms andterminology defined by software being displayed by a user interface.

BACKGROUND

Today, many users and enterprises consume applications and servicesprovided by more than one cloud service provider. The use of multiplecloud service providers reduces dependency on any single vendor, allowsthe users and enterprises to take advantage of the relative strengths ofeach provider, and enables optimization of cloud usage and costs. Asenterprises transform and expand, they often find themselves leveragingmultiple clouds, both public and private, in order to deliver compellingsolutions, software, services and tools to their clients. However, themore cloud providers an organization uses, the more complex the task ofmanaging multiple clouds becomes. Multi-cloud management providesenterprises with the ability to effectively manage enterpriseapplications running across multiple datacenters and/or cloudenvironments, as if the tools, applications and/or services were part ofa single seamless computing environment, providing visibility,governance and automation. One result of multi-cloud usage is that usersand enterprises are exposed to duplicative text with different meaningsin the multiple software environments they interact with.

SUMMARY

Embodiments of the present disclosure relate to a computer-implementedmethod, an associated computer system and computer program product foralleviating ambiguity amongst terms and textual elements of a userinterface having a same or substantially similar term name, but with adiffering definition or meaning depending on the software, service orother type of software product being displayed by the user interface.The computer-implemented method comprises the steps of accessingsoftware; extracting one or more terms displayed as part of thesoftware's user interface (UI) using natural language processing (NLP);generating, by the processor, a network map cataloging the one or moreterms and relationships among the one or more terms; building, by theprocessor, a glossary of the one or more terms from the network map;recording, by the processor, interactivity data comprising one or moreinteractivity parameters describing a level of interactivity with thesoftware; comparing, by the processor, the interactivity data for thesoftware with interactivity data of previously accessed software; inresponse to comparing the interactivity data, determining, by theprocessor, that an interactivity level of one or more of the previouslyaccessed software is greater than an interactivity level of the softwarebeing accessed; cross-checking, by the processor, a glossary of thepreviously accessed software that has the interactivity level greaterthan the software being accessed with the glossary of the one or moreterms to identify one or more overlapping terms, wherein the one or moreoverlapping terms have different meanings; modifying, by the processor,the software's UI to indicate a presence of the one or more overlappingterms being displayed by the software's UI; and alerting a user of thedifferent meanings among the overlapping terms.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings included in the present disclosure are incorporated into,and form part of, the specification. The drawings illustrate embodimentsof the present disclosure and, along with the description, explain theprinciples of the disclosure. The drawings are only illustrative ofcertain embodiments and do not limit the disclosure.

FIG. 1 depicts a block diagram illustrating internal and externalcomponents of an embodiment of a computing system in which embodimentsdescribed herein may be implemented in accordance with the presentdisclosure.

FIG. 2A depicts a functional block diagram describing an embodiment of acomputing environment in accordance with the present disclosure.

FIG. 2B depicts a functional block diagram describing an alternativeembodiment of a computing environment in accordance with the presentdisclosure.

FIG. 2C depicts a functional block diagram describing anotheralternative embodiment of a computer environment, in accordance with thepresent disclosure.

FIG. 3 depicts an embodiment of a cloud computing environment inaccordance with the present disclosure.

FIG. 4 depicts an embodiment of abstraction model layers of a cloudcomputing environment in accordance with the present disclosure.

FIG. 5 depicts a diagram describing an embodiment of a natural languageprocessing module in accordance with the present disclosure.

FIG. 6A depicts an embodiment of an unmodified user interface inaccordance with the present disclosure.

FIG. 6B depicts an embodiment of a modified user interface from the userinterface of FIG. 6A, in accordance with the present disclosure.

FIG. 6C depicts an alternative embodiment of a modified user interfacefrom the user interface of FIG. 6A, in accordance with the presentdisclosure.

FIG. 6D depicts another alternative embodiment of a modified userinterface from the user interface of FIG. 6A, in accordance with thepresent disclosure.

FIG. 7A illustrates a flow diagram depicting an embodiment of a workflowdescribing a user accessing one or more software products for a firsttime, and generating a glossary, in accordance with the presentdisclosure.

FIG. 7B illustrates a flow diagram depicting an embodiment of a workflowdescribing a user subsequently accessing one or more software productsand disambiguating one or more key terms by applying one or more userinterface modifications, in accordance with the present disclosure.

FIG. 8A depicts a flow diagram describing an embodiment of a method fordisambiguating a user interface.

FIG. 8B is a continuation of the flow diagram of FIG. 8A, describing theembodiment for disambiguating the user interface.

FIG. 9 depicts a flow diagram describing an embodiment of a method forgenerating glossaries for key terms of software, in accordance with thepresent disclosure.

FIG. 10 depicts a flow diagram describing an embodiment of a method formatching key terms displayed by software on a user interface, withdifferent definitions, in accordance with the present disclosure.

DETAILED DESCRIPTION

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the disclosure.As used herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, steps, operations, elements, and/orcomponents, but do not preclude the presence or addition of one or moreother features, steps, operations, elements, components, and/or groupsthereof.

The corresponding structures, materials, acts, and equivalents of allmeans or steps plus function elements in the claims below are intendedto include any structure, material, or act for performing the functionin combination with other claimed elements as specifically claimed. Thedescription of the present disclosure has been presented for purposes ofillustration and description but is not intended to be exhaustive orlimited to the disclosure in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the disclosure. Theembodiments chosen and described are in order to best explain theprinciples of the disclosure, the practical applications and to enableothers of ordinary skill in the art to understand the disclosure forvarious embodiments with various modifications as are suited to theparticular use contemplated.

Overview

Hybrid cloud and cloud-based software delivery allows users, enterprisesand other entities access to multiple different public and/or privateclouds, where each may be operated by different cloud providers hostingnumerous different software products, applications, services, platforms,workloads, tools and solutions (generally described collectively as“software” or “software products”). The software being provided by thedifferent cloud providers may be created and developed by differentdevelopers and programmers, and as a result, the terms, language andvocabulary used within the various products, applications and servicesare typically not standardized across the software industry. As softwarebundling becomes a more prevalent practice to help with multi-cloudmanagement, a problem has developed over time with streamlined userinterfaces that offer a single interface experience for accessingmultiple software products provided by a plurality of differentdevelopers and providers. More specifically, when collections ofdifferent software programs, applications and services, etc., areavailable within the single interface experience, the different softwareproducts made accessible through the interface often may display termsor terminology that appears to be identical or substantially similar.Often, however, the seemingly identical terms or terminology of thesoftware being accessed can have different meanings, unbeknownst to theuser. In some cases, a user may not even be aware that a singleinterface is delivering software products from multiple differentsoftware developers and thus may not even be considering whether theterms or terminology presented by the interface that appear the same,actually have different meanings. When a user is unaware of thedifferent meanings of similar terms among the various software productsbeing accessed within the single interface experience, the result can becostly mistakes and errors resulting from misunderstanding ormisinterpreting the seemingly similar terminology presented by theinterface.

The embodiments of the present disclosure recognize that user interfaces(UI) offering a streamlined interface experience for users accessing aplurality of software applications, products, tools services and othersoftware solutions, may display visual elements of the UI comprising aplurality of terms, images or other elements that may have differentmeanings and definitions, depending on the software being accessed at aparticular moment in time. The embodiments of the present disclosurefurther recognize that differentiation among the terms and terminologymay not be readily apparent to a user while accessing the varioussoftware products via a streamlined, single-interface UI. Accordingly,embodiments of the present disclosure may assist the user by identifyingand differentiating among the overlapping terms and terminologydisplayed by a plurality of software products being accessed. One ormore types of alerts and messages may be displayed to the userindicating where the differentiation between the terms and terminologyexists and may further modify the UI visually to differentiate orhighlight the one or more differences among overlapping terms havingdiffering definitions.

Embodiments of the present disclosure may leverage the use of NaturalLanguage Processing (NLP) techniques to detect the different softwareproducts being accessed, that may comprise the same or similarterminology having different definitions. The NLP techniques may extractkey words, terms, and terminology that is visually being displayed bythe UI as one or more textual or visual elements. The NLP techniques maygenerate a network map which may comprise a graph of the interconnectedterms extracted from the UI for each product being accessed as nodes ofthe graph. NLP techniques may catalog each of the terms and terminologyfor the particular software accessed as well as the relationships amongthe terms and terminology being displayed by the UI. Relationships amongterms and terminology may include relationships based on distancesbetween terms, the frequency of terms and a term's part of speech. Fromthe graph of the generated network map, a glossary of key terms can begenerated and stored in a database or other type of repository. Keyterms in the glossary can be prioritized based on the frequency of auser encountering the terms for the software including, but not limitedto, the prevalence of the term being displayed by the UI, within theUI's content, within official documentation of the software product, andbased on the part of speech of the key term.

In some embodiments, each time a user loads or interacts with a softwareproduct, a user's interaction level may be recorded, including theamount of time a user spends experiencing the software product beingaccessed. In some embodiments, certain types of software, such assoftware experienced most frequently by users, software the useroperates for the longest amounts of time, and/or particular softwaredesignated by the user and/or the user's role, may be considered a“core” software product against which other software products' terms andterminology may be evaluated for similar terms and terminology to thosekey terms of the core products most familiar to the user. When softwareproducts that are not considered core products are accessed, theglossary of the non-core product may be cross-referenced againstglossaries for core software products used more frequently by the user.Terms and terminology that overlap among core products, applications,services, etc., but have different definitions or meanings, may bevisually decorated and identified within the UI. Embodiments of thedisclosure may further alert the user via the UI, of the discrepancyamong definitions, and allow the user to select one or more optionsrelating to the overlapping terms. For example, the UI may be modifiedto offer an opportunity for users to adjudicate the alerts and/orcorrect improper findings of differing definitions, input substituteterm names to differentiate among terms displayed by the UI, and/orinput alternative definitions that may be shared with other users of thesoftware. In some embodiments, machine learning may be integrated tolearn how particular users respond to alerts and UI modifications andautomate default responses to identifying overlapping terms withdiffering definitions based on a user's preferred response andbehaviors.

Computing System

FIG. 1 illustrates a block diagram of an embodiment of a computingsystem 100, which may be a simplified example of a computing device(i.e., a physical bare metal system or virtual system) capable ofperforming the computing operations described herein for removing andalleviating ambiguity among software products displayed by a userinterface. Computing system 100 may be representative of the one or morecomputing systems or devices implemented as part of computingenvironment 200, 220, 230, 300, 700 and 720 as shown in FIGS. 2A-7B, inaccordance with the embodiments of the present disclosure and furtherdescribed below in detail. It should be appreciated that FIG. 1 providesonly an illustration of one implementation of a computing system 100 anddoes not imply any limitations regarding the environments in whichdifferent embodiments may be implemented. In general, the componentsillustrated in FIG. 1 may be representative of any electronic device,either physical or virtualized, capable of executing machine-readableprogram instructions.

Although FIG. 1 shows one example of a computing system 100, a computingsystem 100 may take many different forms, including bare metal computersystems, virtualized computer systems, container-oriented architecture,and microservice-oriented architecture. For example, computing system100 can take the form of real or virtualized systems, including but notlimited to desktop computer systems, laptops, notebooks, tablets,servers, client devices, network devices, network terminals, thinclients, thick clients, kiosks, mobile communication devices (e.g.,smartphones), multiprocessor systems, microprocessor-based systems,minicomputer systems, mainframe computer systems, smart devices, and/orInternet of Things (IoT) devices. The computing systems 100 can operatein a local computing environment, networked computing environment, acontainerized computing environment comprising one or more pods orclusters of containers, and/or a distributed cloud computingenvironment, which can include any of the systems or devices describedherein and/or additional computing devices or systems known or used by aperson of ordinary skill in the art.

Computing system 100 may include communications fabric 112, which canprovide for electronic communications among one or more processor(s)103, memory 105, persistent storage 106, cache 107, communications unit111, and one or more input/output (I/O) interface(s) 115. Communicationsfabric 112 can be implemented with any architecture designed for passingdata and/or controlling information between processor(s) 103 (such asmicroprocessors, CPUs, and network processors, etc.), memory 105,external devices 117, and any other hardware components within acomputing system 100. For example, communications fabric 112 can beimplemented as one or more buses, such as an address bus or data bus.

Memory 105 and persistent storage 106 may be computer-readable storagemedia. Embodiments of memory 105 may include random access memory (RAM)and cache 107 memory. In general, memory 105 can include any suitablevolatile or non-volatile computer-readable storage media and maycomprise firmware or other software programmed into the memory 105.Program(s) 114, software applications, processes, services, andinstalled components thereof, described herein, may be stored in memory105 and/or persistent storage 106 for execution and/or access by one ormore of the respective processor(s) 103 of the computing system 100.

Persistent storage 106 may include a plurality of magnetic hard diskdrives, solid-state hard drives, semiconductor storage devices,read-only memories (ROM), erasable programmable read-only memories(EPROM), flash memories, or any other computer-readable storage mediathat is capable of storing program instructions or digital information.Embodiments of the media used by persistent storage 106 can also beremovable. For example, a removable hard drive can be used forpersistent storage 106. Other examples include optical and magneticdisks, thumb drives, and smart cards that are inserted into a drive fortransfer onto another computer-readable storage medium that is also partof persistent storage 106.

Communications unit 111 provides for the facilitation of electroniccommunications between computing systems 100. For example, between oneor more computer systems or devices via a communication network 250. Inthe exemplary embodiment, communications unit 111 may include networkadapters or interfaces such as a TCP/IP adapter cards, wirelessinterface cards, or other wired or wireless communication links.Communication networks can comprise, for example, copper wires, opticalfibers, wireless transmission, routers, load balancers, firewalls,switches, gateway computers, edge servers, and/or other network hardwarewhich may be part of, or connect to, nodes of the communication networksincluding devices, host systems, terminals or other network computersystems. Software and data used to practice embodiments of the presentdisclosure can be downloaded to the computing systems 100 operating in anetwork environment through communications unit 111 (e.g., via theInternet, a local area network, or other wide area networks). Fromcommunications unit 111, the software and the data of program(s) 114 canbe loaded into persistent storage 116.

One or more I/O interfaces 115 may allow for input and output of datawith other devices that may be connected to computing system 100. Forexample, I/O interface 115 can provide a connection to one or moreexternal devices 117 such as one or more smart devices, IoT devices,recording systems such as camera systems or sensor device(s), inputdevices such as a keyboard, computer mouse, touch screen, virtualkeyboard, touchpad, pointing device, or other human interface devices.External devices 117 can also include portable computer-readable storagemedia such as, for example, thumb drives, portable optical or magneticdisks, and memory cards. I/O interface 115 may connect to human-readabledisplay 118. Human-readable display 118 provides a mechanism to displaydata to a user and can be, for example, computer monitors or screens.For example, by displaying data as part of a graphical user interface(GUI). Human-readable display 118 can also be an incorporated displayand may function as a touch screen, such as a built-in display of atablet computer.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer-readable storagemedium (or media) having the computer-readable program instructionsthereon for causing a processor to carry out aspects of the presentinvention.

The computer-readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer-readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer-readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer-readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer-readable program instructions described herein can bedownloaded to respective computing/processing devices from acomputer-readable storage medium or to an external computer or externalstorage device via a network, for example, the Internet, a local areanetwork, a wide area network, and/or a wireless network. The network maycomprise copper transmission cables, optical transmission fibers,wireless transmission, routers, firewalls, switches, gateway computers,and/or edge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer-readable programinstructions for storage in a computer-readable storage medium withinthe respective computing/processing device.

Computer-readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine-dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object-oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer-readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer-readable program instructions by utilizing state information ofthe computer-readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer-readable program instructions may be provided to aprocessor of a computer, or other programmable data processing apparatusto produce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks. Thesecomputer-readable program instructions may also be stored in acomputer-readable storage medium that can direct a computer, aprogrammable data processing apparatus, and/or other devices to functionin a particular manner, such that the computer-readable storage mediumhaving instructions stored therein comprises an article of manufactureincluding instructions which implement aspects of the function/actspecified in the flowchart and/or block diagram block or blocks.

The computer-readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other devicesto cause a series of operational steps to be performed on the computer,other programmable apparatus, or other devices to produce acomputer-implemented process, such that the instructions which executeon the computer, other programmable apparatus, or other device implementthe functions/acts specified in the flowchart and/or block diagram blockor blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be accomplished as one step, executed concurrently,substantially concurrently, in a partially or wholly temporallyoverlapping manner, or the blocks may sometimes be executed in thereverse order, depending upon the functionality involved. It will alsobe noted that each block of the block diagrams and/or flowchartillustration, and combinations of blocks in the block diagrams and/orflowchart illustration, can be implemented by special purposehardware-based systems that perform the specified functions or acts orcarry out combinations of special purpose hardware and computerinstructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration but are not intended tobe exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The terminology used herein was chosen to best explain the principles ofthe embodiment, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

System for Alleviating User Interface Ambiguity Between Software

It will be readily understood that the instant components, as generallydescribed and illustrated in the Figures herein, may be arranged anddesigned in a wide variety of different configurations. Accordingly, thefollowing detailed description of the embodiments of at least one of amethod, apparatus, non-transitory computer readable medium and system,as represented in the attached Figures, is not intended to limit thescope of the application as claimed but is merely representative ofselected embodiments.

The instant features, structures, or characteristics as describedthroughout this specification may be combined or removed in any suitablemanner in one or more embodiments. For example, the usage of the phrases“example embodiments,” “some embodiments,” or other similar language,throughout this specification refers to the fact that a particularfeature, structure, or characteristic described in connection with theembodiment may be included in at least one embodiment. Accordingly,appearances of the phrases “example embodiments,” “in some embodiments,”“in other embodiments,” or other similar language, throughout thisspecification do not necessarily all refer to the same group ofembodiments, and the described features, structures, or characteristicsmay be combined or removed in any suitable manner in one or moreembodiments. Further, in the FIGS., any connection between elements canpermit one-way and/or two-way communication even if the depictedconnection is a one-way or two-way arrow. Also, any device depicted inthe drawings can be a different device. For example, if a mobile deviceis shown sending information, a wired device could also be used to sendthe information.

Detailed herein are embodiments of methods, systems and computer programproducts describing one or more approaches that may be executed usingone or more computing systems 100 operating within a computingenvironment 200, 220, 230, 300, 600, 610, 620, 630, 700, 720 andvariations thereof. FIGS. 2A-7B depict embodiments of one or morecomputing environments 200, 220, 230, 300, 600, 610, 620, 630, 700, 720describing approaches for alleviating ambiguity within a UI 219,including the implementation of approaches for identifying overlappingterms and terminology used by different software products beingaccessed, generating a glossary of key terms, comparing the glossary ofkey terms with the software being accessed to determine whether keyterms have differing definitions and modifying a UI 219 to alleviateambiguity about differing definitions between the different softwareproducts being displayed by the UI 219. Embodiments of computingenvironments 200, 220, 230, 300, 600, 610, 620, 630, 700, 720 mayinclude a plurality of computing systems 100, both physical and/orvirtualized, that may be interconnected via a computer network 250. Theinterconnected computing systems 100 communicating over computer network250 can include but are not limited to host computing system 201, clientsystems 217 a-217 n, one or more data center(s) 231, one or more privatecloud service provider(s) 223, one or more public cloud serviceprovider(s) 227, user computing device 235 a-235 n and/or one or morenetwork-accessible repository 236.

Embodiments of host computing system 201, client systems 217 a-217 n,data center(s) 231, private cloud service provider(s) 223, public cloudservice provider(s) 227, user computing device 235 a-235 n andnetwork-accessible repository 236, may each be a specialized computersystem comprising specialized configurations of hardware, software or acombination thereof as shown and described in FIGS. 2A-7B of the presentdisclosure and in embodiments described herein. Embodiments of the hostcomputing system 201, client systems 217 a-217 n, data center(s) 231,private cloud service provider(s) 223, public cloud service provider(s)227, user computing device 235 a-235 n and network-accessible repository236, may not only comprise the elements of the systems and devicesdepicted in FIGS. 2A-7B, but may also incorporate one or more elementsof computing system 100, as shown in FIG. 1 and described in theCOMPUTING SYSTEM section above. For example, one or more elements of thecomputing system 100 may be integrated into the host computing system201, client systems 217 a-217 n, data center(s) 231, nodes of theprivate cloud service provider(s) 223, nodes of the public cloud serviceprovider(s) 227, user computing device 235 a-235 n and/or one or morenetwork-accessible repository 236 including the integration of one ormore processor(s) 103, memory 105, persistent storage 106, cache 107,communications unit 111, I/O interface(s) 115, external device(s) 117and/or display 118.

Embodiments of the host computing system 201, client systems 217 a-217n, data center(s) 231, user computing device 235 a-235 n,network-accessible repository 236 and/or nodes of the cloud serviceproviders 223, 227, may be desktop computers, laptop computers, tabletcomputers, smartphones, server computers, or any other computer systemknown in the art. In some embodiments host computing system 201, clientsystems 217 a-217 n, data center(s) 231, user computing device 235 a-235n, more network-accessible repository 236 and nodes of the cloud serviceproviders 223, 227 may represent computer systems utilizing clusteredcomputers and components to act as a single pool of seamless resourceswhen accessed through network 250. For example, such embodiments may bepart of storage area network (SAN), and network attached storage (NAS)applications.

Embodiments of the computer network 250 may be constructed using wired,wireless or fiber optic connections. As shown in the exemplaryembodiments, the data host computing system 201, client systems 217a-217 n, one or more data center(s) 231, one or more private cloudservice provider(s) 223, one or more public cloud service provider(s)227, user computing device 235 a-235 n and one or morenetwork-accessible repository 236 may connect and communicate over thenetwork 250 using a communication unit 111, such as a network interfacecontroller or other network communication hardware. Embodiments of thecommunication unit 111 may implement specialized electronic circuitryallowing for communication using a specific physical layer and a datalink layer standard. For example, Ethernet, Fiber channel, Wi-Fi orToken Ring. Communication unit 111 may further allow for a full networkprotocol stack, enabling communication over network 250 to the group ofcomputer systems or other computing hardware devices linked togetherthrough communication channels. The network 250 may facilitatecommunication and resource sharing among the host computing system 201,client systems 217 a-217 n, one or more data center(s) 231, one or moreprivate cloud service provider(s) 223, one or more public cloud serviceprovider(s) 227, user computing device 235 a-235 n, one or morenetwork-accessible repository 236 and other network accessible systemsconnected to the network 250. Examples of network 250 may include alocal area network (LAN), home area network (HAN), wide area network(WAN), back bone networks (BBN), peer to peer networks (P2P), campusnetworks, enterprise networks, the Internet, cloud computing networksand any other network known by a person skilled in the art.

Cloud computing is a model of service delivery for enabling convenient,on-demand network 250 access to a shared pool of configurable computingresources (e.g., networks, network bandwidth, servers, processing,memory, storage, applications, virtual machines, and services) that canbe rapidly provisioned and released with minimal management effort orinteraction with a provider of the service. A cloud model may include atleast five characteristics, at least three service models, and at leastfour deployment models.

Characteristics are as follows:

On-demand self-service: a cloud consumer can unilaterally provisioncomputing capabilities, such as server time and network storage, asneeded automatically without requiring human interaction with theservice's provider.

Broad network access: capabilities are available over a network andaccessed through standard mechanisms that promote use by heterogeneousthin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

Resource pooling: the provider's computing resources are pooled to servemultiple consumers using a multi-tenant model, with different physicaland virtual resources dynamically assigned and reassigned according todemand. There is a sense of location independence in that the consumergenerally has no control or knowledge over the exact location of theprovided resources but may be able to specify location at a higher levelof abstraction (e.g., country, state, or datacenter).

Rapid elasticity: capabilities can be rapidly and elasticallyprovisioned, in some cases automatically, to quickly scale out andrapidly released to quickly scale in. To the consumer, the capabilitiesavailable for provisioning often appear to be unlimited and can bepurchased in any quantity at any time.

Measured service: cloud systems automatically control and optimizeresource use by leveraging a metering capability at some level ofabstraction appropriate to the type of service (e.g., storage,processing, bandwidth, and active user accounts). Resource usage can bemonitored, controlled, and reported, providing transparency for both theprovider and consumer of the utilized service.

Service Models are as follows:

Software as a Service (SaaS): the capability provided to the consumer isto use the provider's applications running on a cloud infrastructure.The applications are accessible from various client devices through athin client interface such as a web browser (e.g., web-based e-mail).The consumer does not manage or control the underlying cloudinfrastructure including network, servers, operating systems, storage,or even individual application capabilities, with the possible exceptionof limited user-specific application configuration settings.

Platform as a Service (PaaS): the capability provided to the consumer isto deploy onto the cloud infrastructure consumer-created or acquiredapplications created using programming languages and tools supported bythe provider. The consumer does not manage or control the underlyingcloud infrastructure including networks, servers, operating systems, orstorage, but has control over the deployed applications and possiblyapplication hosting environment configurations.

Infrastructure as a Service (IaaS): the capability provided to theconsumer is to provision processing, storage, networks, and otherfundamental computing resources where the consumer is able to deploy andrun arbitrary software, which can include operating systems andapplications. The consumer does not manage or control the underlyingcloud infrastructure but has control over operating systems, storage,deployed applications, and possibly limited control of select networkingcomponents (e.g., host firewalls).

Deployment Models are as follows:

Private cloud: the cloud infrastructure is operated solely for anorganization. It may be managed by the organization or a third party andmay exist on-premises or off-premises.

Community cloud: the cloud infrastructure is shared by severalorganizations and supports a specific community that has shared concerns(e.g., mission, security requirements, policy, and complianceconsiderations). It may be managed by the organizations or a third partyand may exist on-premises or off-premises.

Public cloud: the cloud infrastructure is made available to the generalpublic or a large industry group and is owned by an organization sellingcloud services.

Hybrid cloud: the cloud infrastructure is a composition of two or moreclouds (private, community, or public) that remain unique entities butare bound together by standardized or proprietary technology thatenables data and application portability (e.g., cloud bursting forload-balancing between clouds).

A cloud computing environment is service oriented with a focus onstatelessness, low coupling, modularity, and semantic interoperability.At the heart of cloud computing is an infrastructure that includes anetwork of interconnected nodes.

Referring to the drawings, FIG. 3 is an illustrative example of a cloudcomputing environment 300. As shown, cloud computing environment 300includes one or more cloud computing nodes 310 with which user computingdevices 235 a-235 n and/or client systems 217 a-217 n may be used bycloud consumers, to access one or more software products, services,applications, and/or workloads provided by the cloud service providers223, 227. Examples of the user computing devices 235 a, 235 b, 235 c . .. 235 n are depicted and may include devices such as a smartphone orcellular telephone, desktop computer, laptop computer, and/or any othercomputing device including non-traditional computing devices such asinternet-enabled smart devices, and IoT devices, such as the smartwatchdepicted in FIG. 3. Nodes 310 may communicate with one another and maybe grouped (not shown) physically or virtually, in one or more networks,such as Private, Community, Public, or Hybrid clouds as describedhereinabove, or a combination thereof. This allows cloud computingenvironment 300 to offer infrastructure, platforms and/or software asservices for which a cloud consumer does not need to maintain resourceson a local computing device. It is understood that the types of usercomputing devices 235 shown in FIG. 3 are intended to be illustrativeonly and that computing nodes 310 and cloud computing environment 300can communicate with any type of computerized device over any type ofnetwork and/or network addressable connection (e.g., using a webbrowser).

Referring now to FIG. 4, a set of functional abstraction layers providedby cloud computing environment 350 is shown. It should be understood inadvance that the components, layers, and functions shown in FIG. 4 areintended to be illustrative only and embodiments of the invention arenot limited thereto. As depicted, the following layers and correspondingfunctions are provided:

Hardware and software layer 460 includes hardware and softwarecomponents. Examples of hardware components include: mainframes 461;RISC (Reduced Instruction Set Computer) architecture-based servers 462;servers 463; blade servers 464; storage devices 465; and networks andnetworking components 466. In some embodiments, software componentsinclude network application server software 467 and database software468.

Virtualization layer 470 provides an abstraction layer from which thefollowing examples of virtual entities may be provided: virtual servers471; virtual storage 472; virtual networks 473, including virtualprivate networks; virtual applications and operating systems 474; andvirtual clients 475.

In one example, management layer 480 may provide the functions describedbelow. Resource provisioning 481 provides dynamic procurement ofcomputing resources and other resources that are utilized to performtasks within the cloud computing environment 300. Metering and pricing482 provide cost tracking as resources are utilized within the cloudcomputing environment 300, and billing or invoicing for consumption ofthese resources. In one example, these resources can include applicationsoftware licenses. Security provides identity verification for cloudconsumers and tasks, as well as protection for data and other resources.User portal 483 provides access to the cloud computing environment 300for consumers and system administrators. Service level management 484provides cloud computing resource allocation and management such thatrequired service levels are met. Service Level Agreement (SLA) planningand fulfillment 485 provide pre-arrangement for, and procurement of,cloud computing resources for which a future requirement is anticipatedin accordance with an SLA.

Workloads layer 490 provides examples of functionality for which thecloud computing environment may be utilized. Examples of workloads andfunctions which may be provided from this layer include: softwaredevelopment and lifecycle management 491, data analytics processing 492,virtual classroom education delivery 493, transaction processing 494;multi-cloud management 495 and disambiguation module 203.

FIG. 2A depicts an embodiment of computing environment 200, capable ofalleviating ambiguity between terms and terminology of one or moredifferent software products, including (but not limited to) services,applications, tools, workloads, etc., being accessed by one or moreclient system 217 a-217 n (referred to generally herein as “clientsystem 217.”) for display by a user interface 219 a-219 n (hereinreferred to generally as “UI 219”) of the client systems 217. Softwareproducts being delivered and displayed by the client system 217 via UI219 may be accessed from a plurality of different sources. For example,as shown in the embodiment of FIG. 2A, client system 217 may access anddisplay one or more applications 221 a-221 n locally stored by theclient system 217, as well as hosted applications and services 213delivered to the client system 217 by host computing system 201,applications and services 225, 229, 233 hosted by private cloud serviceprovider(s) 223, public cloud service provider(s) 227 and/or datacenter(s) 231.

Embodiments of computing environment 200 may include a host computingsystem 201, which may provide disambiguation software and/or services tothe one or more client system 217 accessing the plurality of differentsoftware products available to the client system 217 over network 250.As shown in the Figures, host computing system 201 may include adisambiguation module 203 which may be responsible for performing one ormore tasks, functions and/or processes for alleviating ambiguity betweenthe terms or terminology of the software products being accessed anddisplayed by the UI 219. The term “module” may refer to a hardwaremodule, software module, or a module may be a combination of hardwareand software resources. A module (whether hardware, software or acombination thereof) may be designed to implement or execute one or morespecific tasks, routines or functions. Embodiments of hardware-basedmodules may include self-contained components such as chipsets,specialized circuitry, one or more memory 105 devices and/or persistentstorage 106. A software-based module may be part of a program 114,program code or linked to program code containing specific programmedinstructions loaded into a memory 105 device or persistent storage 106device of a computing system 100 operating within a computingenvironment 200, 220, 230, 300, 600, 610, 620, 630, 700, 720.Embodiments of the disambiguation module 203 may comprise one or morecomponents or sub-modules that may perform the tasks, processes orfunctions associated with alleviating ambiguity between the terms andterminology displayed by the software products via the UI 219. Forexample, as shown in FIG. 2A, embodiments of the disambiguation module203 may comprise a user profile module 205, an NLP module 207, aglossary module 209 and/or a UI modification module 211.

Embodiments of the user profile module 205 may perform functions, tasksor processes associated with registering new users and/or maintainingprofiles of existing users of the disambiguation module 203. Embodimentsof user profiles created by the user profile module 205 may track andrecord preferences of the user, as well as one or more roles the usermay be associated with, such as an assigned role within an enterprise ornetwork. In some embodiments, user profiles may track software productsbeing accessed and used by the users. Moreover, in some instances, theuser profile module 205 may record the amount of time a user spendsaccessing each software product and log the user's time spent accessingeach of the software products and/or frequency of interactions with thesoftware products to the user's profile. User profiles comprisingrecords of a user's interactions and preferences for software productsmay be stored by user profile module 205, storage devices, databasesand/or repositories that may be accessible to the disambiguation module203 locally or via network 250.

Embodiments of the user profiles created and stored by the user profilemodule 205 may help the disambiguation module 203 identify one or moresoftware products that the user may be most familiar with and/or prefer.The preference, or level of familiarity may be calculated in someinstances based on an amount of time spent by the user accessing orinteracting with each software product recorded to the user's profileand/or the frequency of interactions with each software product. In someembodiments, the user profile module 205 may calculate an interactivitylevel based the amount of time spent by the user accessing each of thesoftware products and the frequency of interactions with each softwareproduct. Based on the interactivity parameters, an interactivity levelmay be calculated which may represent a user's overall preference,affinity or familiarity with one or more software products.

Embodiments of the user profile module 205 may designate one or moresoftware products within a user's profile as being “core” products ordefault products, by which terms and terminology of other softwareproducts may be judged against and differentiated; for example, based onthe software products with the highest interactivity level. Inalternative embodiments, core products may be defined by a user's roleassigned to the user's profile and/or based on the user's selection ofproducts that the user has designated to be the core products. Thedesignation of products as core products in the user's profile maychange over time. For example, the core products may change as the userchanges roles or adopts new software which the user begins to accessmore frequently than previously designated core products and/or beginsaccessing for longer periods of usage over an extended length of time.

Embodiments of the disambiguation module 203 may comprise an NLP module207. Embodiments of the NLP module 207 may perform functions, tasks andprocesses of the disambiguation module 203 associated with understandingand cataloging the terms and terminology displayed by the softwareproducts on the UI 219, the relationships among terms within a softwareproduct, the parts of speech of the terms, as well as frequency andimportance of the terms being displayed. Moreover, in some embodiments,the NLP module 207 may build glossaries of key terms which may includenetwork maps comprising graphs generated during the cataloging of theterms and terminology which can express the relationships among theterms and terminology of each software product. The data from the graphsof the network maps can be cross-referenced among software products toidentify overlapping terms having similar appearances but differingdefinitions. Embodiments of the NLP module 207 may support a pluralityof languages. The NLP module 207 may perform the functions, tasks andprocesses associated with understanding and cataloging the terms andterminology displayed by the software products as well as therelationships among the terms, parts of speech etc., in any availablelanguage the NLP module 207 may be programmed to understand. Moreover,embodiments of the NLP module 207 may cross-reference and compareglossaries of key terms for software products even when the terms andterminology of the different software products or core products are indifferent languages.

Each time a software product is accessed, embodiments of the NLP module207 may extract the terms and terminology using natural languageprocessing techniques. The NLP module 207 may ingest the softwareproduct's metadata as well as the content accessible to the user acrossall pages of the software product; for example, one or more visualelements such as search bars, data tables, buttons, tabs, labels,images, text, graphics, etc. In some embodiments, additional datasources related to the software product may be ingested by the NLPmodule 207 as well. For example, the NLP module 207 may ingest officialdocumentation associated with the software product, such as operationmanuals, help materials, and supplementary materials. In someembodiments, NLP module 207 may use sentiment analysis to help identifythe terms and terminology being ingested as well as the parts of speechassociated with each term and being ingested by the NLP module 207. Inthe exemplary embodiments, the algorithms identifying terms and parts ofspeech thereof may be implemented using a tokenization process.

Referring to the drawings, FIG. 5 provides a more detailed view of theone or more components that may comprise NLP module 207. In someembodiments, the NLP module 207 may include a natural language processor561, data sources 571, a search application 581, and/or a contentartifact analyzer 591. The natural language processor 561 may comprise acomputer module that analyzes the content of the software product beingaccessed and displayed by the UI 219 and other electronic documentsaccessible to the NLP module 207, such as official documentation for thesoftware product(s). The natural language processor 561 may performvarious methods and techniques for analyzing the ingested data andmetadata (e.g., syntactic analysis, semantic analysis, etc.). Thenatural language processor 561 may be configured to recognize andanalyze any number of natural languages. In some embodiments, thenatural language processor 561 may parse passages of the displayedcontent and/or visual elements being displayed by the UI 219. Further,the natural language processor 561 may include various modules toperform analyses of the user input. These modules may include, but arenot limited to: a tokenizer 562, a part-of-speech (POS) tagger 563, asemantic relationship identifier 564, and a syntactic relationshipidentifier 565.

Embodiments of tokenizer 562 may be a computer module that performslexical analysis. The tokenizer 562 may convert a sequence of charactersinto a sequence of tokens. A token may be a string of charactersdisplayed as text or visual elements by the software product on the UI219 and/or electronic documents provided by and/or associated with thesoftware product. Further, in some embodiments, the tokenizer 562 mayidentify word boundaries of the textual elements being displayed by theUI 219 and break text passages within the displayed textual elementsinto component of the textual elements, such as words, multiword tokens,numbers, and punctuation marks. In some embodiments, the tokenizer 562may receive a string of characters, identify the lexemes in the string,and categorize them into tokens.

Consistent with various embodiments, the Part of Speech (POS) tagger 563may be a computer module that marks up a word in passages to correspondto a particular part of speech. The POS tagger 563 may read a passage orother text in natural language and assign a part of speech to each wordor other token. The POS tagger 563 may determine the part of speech towhich a word (or other text element) corresponds, based on thedefinition of the word and the context of the word. The context of aword may be based on its relationship with adjacent and related words ina phrase, sentence, or paragraph. In some embodiments, the context of aword may be dependent on one or more previously analyzed textualelements. In embodiments, the output of the natural language processor561 may populate a text index, a triplestore, or a relational databaseto enhance the contextual interpretation of a word or term. Examples ofparts of speech that may be assigned to words include, but are notlimited to, nouns, verbs, adjectives, adverbs, and the like. Examples ofother part of speech categories that POS tagger 563 may assign include,but are not limited to, comparative or superlative adverbs, wh-adverbs,conjunctions, determiners, negative particles, possessive markers,prepositions, wh-pronouns, and the like. In some embodiments, the POStagger 563 may tag or otherwise annotate tokens of a passage with partof speech categories. In some embodiments, the POS tagger 563 may tagtokens or words of a passage to be parsed by the natural languageprocessor 561.

In some embodiments, the semantic relationship identifier 564 may be acomputer module that may be configured to identify semanticrelationships of recognized text elements (e.g., words, phrases)displayed by the UI 219 and/or documents transmitted one or more systemsor service providers delivering the software products to users; forexample, cloud service providers 223, 227, data center(s) 231 and/orhost computing systems 201. In some embodiments, the semanticrelationship identifier 564 may determine functional dependenciesbetween entities and other semantic relationships.

Consistent with various embodiments, the syntactic relationshipidentifier 565 may be a computer module that may be configured toidentify syntactic relationships in a passage composed of tokens. Thesyntactic relationship identifier 565 may determine the grammaticalstructure of sentences such as, for example, which groups of words areassociated as phrases and which word is the subject or object of a verb.The syntactic relationship identifier 565 may conform to formal grammar.

In some embodiments, the output of natural language processor 261 may beused by search application 581 to perform a search of a set of (e.g.,one or more) corpora to retrieve information regarding contentartifacts. As used herein, a corpus may refer to one or more datasources 571. In some embodiments, the data sources 571 may include datawarehouses, information corpora, data models, and document repositories.In some embodiments, the data sources 571 may include an informationcorpus 572. The information corpus 572 may enable data storage andretrieval. In some embodiments, the information corpus 572 may be astorage mechanism that houses a standardized, consistent, clean, andintegrated list of conversation topics and/or emotional sentiments. Theinformation corpus 572 may also store, for each topic/sentiment, a listof associated outcomes. For example, the information corpus 572 mayinclude a ranking of conversational topics for each user, and/or aprofile for each user. The data may be sourced from various operationalsystems. Data stored in the information corpus 572 may be structured ina way to specifically address reporting and analytic requirements. Insome embodiments, the information corpus 572 may be a data repository, arelational database, triplestore, or text index.

In some embodiments, the content artifact analyzer 591 may be a modulethat identifies conversational topics and user sentiments associatedwith one or more topics. In some embodiments, the content artifactanalyzer 591 may include a topic identifier 592 and a sentiment analyzer593. When textual elements of the UI 219 are inputted into the NLPmodule 207, the content artifact analyzer 591 may be configured toanalyze textual elements inputted using natural language processing toidentify one or more content topics, including one or more intents andentities associated with the input. The content artifact analyzer 591may first parse the textual elements using the natural languageprocessor 561 and related subcomponents 562-565. After parsing thetextual elements, the topic identifier 592 may identify one or moretopics present in the content that was parsed. This may be done, forexample, by searching a dictionary (e.g., information corpus 572) usingthe search application 581.

The sentiment analyzer 593 may determine the content sentiment for theingested data and metadata of the software product, according to thecontent topic identified by topic identifier 592. This may be done byusing the search application 291 to traverse the various data sources(e.g., the information corpus 272) for information regarding the termsand phrases used within the user input. The sentiment analyzer 593 maysearch, using natural language processing, documents from the variousdata sources 571 for terms related to those detected as part of theingested data and/or metadata of the software products being accessed.

In some embodiments, the natural language processor 561 may parse theingested data and metadata provided by software product and displayed byUI 219 and the software product, in order to generate corresponding datastructures for one or more portions of the inputted data. For example,in response to receiving the textual or visual elements of the softwareproducts displayed by the UI 219, the natural language processor 561 mayoutput parsed textual elements represented in the form of a parse tree,network map or other graph structure. Embodiments may filter the termsand terminology being parsed by the NLP module 207 based on parts ofspeech and a graphing algorithm may add the parsed terms or words to agraph as vertices or nodes of the graph. For example, in the exemplaryembodiment of FIG. 7A, application or services 703 a, 703 b are parsedby NLP module 207 and the terms processed by NLP module 207 aregenerated into a network map 704 a, 704 b corresponding to the textualand visual elements of the software products that were processed,graphically representing the terms and relationships between the termsas nodes and vertices. In some instances, an edge can be added betweenthe terms and words displayed by the graph. Edges may be added betweenwords that fall within a particular distance of each other, as set bythe graphing algorithm, NLP module 207 and/or the user.

For example, FIG. 7A describes a workflow of the disambiguation module203 providing disambiguation services to a user 701 accessing one ormore software products, including application or services 703 a, 703 bbeing displayed by UI 219, as part of a single-interface experience. Asshown in the embodiment 700 of FIG. 7A, a user 701 accesses content ofone or more applications or services 703 a, 703 b for the first time.The user profile module 205 may record the first instance of theapplication or services 703 a, 703 b being accessed in the user's 701profile. The content of applications or services 703 a, 703 b beingaccessed by the user, along with metadata and documentation associatedwith the applications or services 703 a, 703 b may be ingested by theNLP module 207. NLP module 207 may use the ingested data and metadata togenerate network map 704 a, 704 b graphing the relationships and weightsamong the terms, words and multi-word expressions ingested and analyzedby the NLP module from the data and metadata. In some embodiments 700,the network map 704 a may correspond to the content, data and metadataingested by the NLP module 207 for application or service 703 a, whilenetwork map 704 b may represent the terms, words, and multi-wordexpressions corresponding to the content, data and metadata ofapplication or service 703 b.

As depicted in example of a network map 704 a, 704 b in FIG. 7A, each ofthe network maps 704 a, 704 b may include a plurality of terms or wordsas nodes connected together to form a graph by one or more edgesconnecting the nodes of terms together based upon closeness of theterm's relationships as displayed by the UI 219. Terms that are closerin relationship may be directly connected together by an edge. In someinstances, a node for a term may be connected to multiple terms withinthe graph of the network map 704 a, 704 b. For example, as shown in FIG.7A, the node for term A in network map 704 b may be directly linked byan edge to Term B, Term C and Term E as shown. Likewise, Term A innetwork map 704 A is shown only connected to Term X. Nodes of terms inthe network map 704 a, 704 b directly connected to another term node bya shared edge may be considered to be 1^(st) degree neighbors. As shownin network map 704 b, Term A's 1^(st) degree neighbors may be Term B,Term C and Term E. Likewise, in the network map 704 a for application orservice 703 a, Term A's 1^(st) degree neighbor may be Term X which isdirectly connected along a shared edge with Term A.

In some embodiments of NLP module 207, a graphing ranking algorithm,such as a TextRank algorithm, may be applied to the data being graphed.The ranking algorithm may assign weights to each edge of the graphbetween the terms, words, groups of words and/or multi-word expressionsof the graph; for example, based on a frequency of the relationshipsbetween the words or groups of words being represented by the graph.Vertices of the graph being generated by the NLP module 207 for eachsoftware product being accessed, may be ranked by score and sorted. Insome embodiments, a selected number of vertices with the highest rankingscore may be referred to as key terms or keywords. The key terms orkeywords may be stored as part of a glossary database 215, as shown inFIG. 7a and may be accessed by the disambiguation module 203 during theperformance of one or more comparisons and/or while cross referencingkey terms and keywords between different software products that areaccessed and/or displayed by the same UI 219. Moreover, in someembodiments, multi-word expressions can be identified from the graphswhere the vertices of the graph comprise top ranked key terms orkeywords are adjacent vertices.

Embodiments of the disambiguation module 203 may comprise a glossarymodule 209. The glossary module 209 may perform tasks, functions and/orprocesses of the disambiguation module 203, which may be associated withanalyzing two or more glossaries of software products being accessed bya user, matching key terms or keywords of the selected glossaries beingcompared with one another and determining whether there are anyoverlapping key terms or keywords within the glossaries that areconsidered the same. Each time a software product is accessed by a user,embodiments of the glossary module 209 may perform a check to determinewhether the software being accessed is a core product. As noted above, acore product may be identified within the user's profile in one of aplurality of ways. For example, labelling a software product as a coreproduct may be based upon the amount of time a user has logged accessingthe software product with the user's profile, the frequency of softwareproduct use, user-specific designation as a core product, or based upona user's designated role or experience. If the software product beingaccessed by the user is identified as a core product, the glossarymodule 209 and/or the user profile module 205 may track or record theuser's use of the core product to the user profile and/or update theglossary stored in the glossary database 215 for the specific softwareproduct being accessed. Conversely, where embodiments of the glossarymodule 209 identify a software product being accessed by the user is notconsidered a core product, the glossary module 209 may compare one ormore glossaries of core products with the glossary of the softwareproduct being accessed, in order to identify one or more overlapping keyterms or keywords with core products that may not have the samedefinition.

Embodiments of the glossary module 209 may perform tasks or functionscomparing matching key terms or keywords for software being accessedwith one or more core products. Such comparison functions or tasks canbe performed by comparing a software product's glossary with a glossaryof one or more designated core products. The comparison functions andthe identification of overlapping key terms or keywords among softwareproducts with different definitions, may be performed using the graphsgenerated by the NLP module 207 which may be stored in glossary database215. For example, a comparison algorithm may be executed by the glossarymodule 209, wherein the algorithm iteratively cycles through all theterms of the glossaries being compared. As the algorithm iterativelycycles through the terms, the glossary module 209 identifies the terms,terminology and/or multi-term expressions within the glossaries that areconsidered the same or similar (within a defined threshold limit ofsimilarity). For each of the terms that are identified as being similaror the same, but present in different glossaries, the node of the graphsassociated with the same or similar terms may be selected and one ormore properties of the selected nodes may be extracted. For example, theglossary module 209 can extract the number of 1^(st) degree neighbors tothe selected nodes and the names of the terms associated with the 1^(st)degree neighbors of the selected nodes. Moreover, in some embodiments,the glossary module 209 may extract the relative weights assigned toeach of the edges of 1^(st) degree neighbors to the selected nodes; forexample, the weight of the edge and the weight of all edges that are the1^(st) degree from the selected node. While comparing the nodes of thegraphs, some embodiments of the glossary module 209 may compare thevalues of the highest weighted 1^(st) degree neighbor for selected nodesbeing compared from the different graphs associated with the accessedsoftware product and the core product. Embodiments of the glossarymodule 209 may conclude that the two terms associated with the nodes ofthe different graphs being compared are considered to be the same termif the value of the highest weighted 1^(st) degree neighbor to the nodefor each of the selected nodes being compared are the same value.

Although the glossary module 209 may indicate that the terms for theselected nodes may be considered to be the same term upon identifyingthat the value of the highest weighted 1^(st) degree neighbors for eachof the terms being compared are the same, even if the values of thehighest weighted 1^(st) degree neighbors to the selected nodes are notthe same, the glossary module 209 may still identify the nodes as beingthe same through another method of comparison. For example, in someembodiments, the glossary module 209 may implement cosine similarity asa metric for measuring how similar the selected nodes of the differentgraphs are to one another. The glossary module 209 may normalize theweighted edge values of each graph; for example, normalizing the edgevalues to having a length of 1. The glossary module 209 may compute thecosine similarity of each selected node being compared by using the sameselected degree of neighbors for each node during the calculation.Embodiments of the glossary module 209 may automatically select thenumber of degrees of neighbors to use for the calculation or the numberof degrees of the neighbors in the graphs may be inputted by a userand/or stored in the user profile as part of the settings of thedisambiguation module 203. Upon calculating the cosine similarity foreach of the nodes of the graphs being compared, if the cosine similaritybetween the nodes is greater than a value V, which is a value between 0and 1 that may be selected by the user and/or the disambiguation module203, the terms of the nodes being compared are considered to be the sameterm. Otherwise, if the cosine similarity between the selected nodesbeing compared is not greater than the value V, the terms being comparedare not considered the same by the glossary module 209.

Embodiments of the disambiguation module 203 may comprise a UImodification module 211. The UI modification module 211 may beresponsible for performing tasks, functions and processes associatedwith altering or modifying the display of one or more software productsvia the UI 219, in response to the glossary module 209 identifying oneor more key terms or keywords of the software product being accessed,that differ in definition from core products that might be morefrequently accessed by the user or more commonly associated with theuser's role. Overlapping terms of the software product's glossary and/orgraph of the glossary, and the key terms or keywords within the glossaryof the core products may be indicated on the UI 219 by the UImodification module 211. For example, in some embodiments, the UImodification module 211 may decorate the UI 219 to indicate the presenceof an overlapping term that might not have the same meaning ordefinition as the similar or same term that may be part of a coreproduct. The UI modification module's 211 decoration on the UI 219 mayalert the user of the difference in order to prevent the user fromassuming the terms have the same definition and/or meaning, in order toinform the user of the differing definitions between the terms orterminology that may appear the same on its face. For example, the term“policy” in a multi-cloud management software may be different from theterm “policy” that might be displayed by edge computing tools. Forexample, in the multi-cloud management software, “policy” may refer tosets of standards, categories and controls that may be used to trackcompliance status of clusters within the cloud computing environment,whereas “policy” within the edge computing tools may relate todeployment patterns on the edge node of a network.

In some embodiments, the UI modification module 211 may insert alertmessages, notifications, popup messages, highlight terms, or implementany other method for indicating the differences between the term beingdisplayed by the UI 219 for the software product being accessed and theterm associated with a core product. In some embodiments, a notificationor other type of message prompt may appear on the UI 219. Thenotification or other type of message inserted by the UI modificationmodule 211 may indicate the presence of the similar terms havingdifferent definitions, may describe the different definitions or meaningto the user and/or allow a user to adjudicate whether the interpretationof the definitions or the similarities in the terminology was accuratelyidentified by the disambiguation module 203. The UI modification module211 may include a user input within the notification that allows theuser to accept or modify the determination made regarding the similaritybetween terms wherein the user may accept the notification message ascorrect, alert the disambiguation module 203 that the calculatedsimilarity between the terms is incorrect, and/or correct the definitionof one or more terms presented by the UI modification module 211.

Referring to the drawings, FIG. 6A-6C demonstrate an example of the UImodification module 211 modifying a UI 219 displaying a software productbeing accessed by a user. As shown in FIG. 6A, embodiment 600 depictsthe UI 219 in an unmodified state, displaying a multicloud managersoftware application. In one embodiment, as shown in FIG. 6B, embodiment610 depicts one method the UI modification module 211 may modify the UI219 in order to inform a user regarding one or more terms, text orvisual elements being displayed by the multicloud manager are defineddifferently than other core products that a user may access via the UI219. As shown in embodiment 610, the UI modification module 211 maygenerate an alert 601 and place the alert 601 onto the UI 219. As shown,when a user accesses the software product, the alert 601 may beinteracted with, for example by clicking the alert on the UI 219, todisplay a notification message 603. In this example, the notificationmessage 603 describes a definition of the term “policy”, since the“policy” definition in the multicloud manager differs from one of thecore products that a user may access more frequently and/or the user mayhave recorded a longer length of time accessing. As shown in FIG. 6B, auser receiving the alert 601 may review the definition of the term beingpresented in the notification message 603 and may confirm the definitionand/or revise the definition; for example, by clicking the revise button605 and inputting a new revised definition for the term “policy”.

It should be noted that the terms, terminology and other vocabulary thatmay be modified by the UI modification module 211 may not simply belimited to computing terms such as “policy”, “event”, “error”,“incident”, “violation”, “logs”, etc., but may be used to modify the UI219 for any type of specialized vocabulary that may differ from thevocabulary generally used or understood by a user. For example, othertypes of specialized vocabularies in a particular field, such as thelegal profession or medical profession, may include less commonlyunderstood definitions for commonly used words. For example, a user thatmay typically use a software product directed for use by medicalprofessionals as a core product, wherein the UI 219 may regularlydisplay a term such as “incident” to describe an acute medical conditionor sudden medical event that affects a patient. However, if the medicalprofessional accesses a non-core software product, for example softwareproducts for managing cloud-network computing resources that provide theservices to a hospital, IT-related terms that describe “incidents” onthe network may be confusing to a medical professional who may be morereadily trained in understanding the medical definitions of “incident”.Accordingly, embodiments of the disambiguation module 203, may behelpful for translating the definitions of terms or terminology thatlook the same or seem similar, across multiple professional disciplines,in addition to informing users across different roles or userexperiences with different software products.

In some embodiments, the UI modification module 211 may modify the UI219 to further include an input as part of the notification message 603or prompt, that may allow a user to modify or change one or more termsin order to distinguish between the terms based on the inputteddifferent names of the terms. The UI modification module 211 may updatethe UI 219 by propagating the user change throughout the UI 219,reflecting the modified term names that may now be distinguished fromone another. The embodiment 620, depicted in FIG. 6C provides an exampleof such modifications being implemented to UI 219 by the UI modificationmodule 211. As shown, upon opening alert 601, the notification message603 displays the definition of the term and further asks the userwhether or not to revise the term name. In such an embodiment, thenotification message may include an input 621 that may allow the user toinput the revised term name. As shown in the exemplary embodiment ofFIG. 6C, a user has inputted “Cluster Policy” to replace “Policy” forthe particular software product being displayed by the UI 219. Uponsubmitting the revision to the term name, the UI modification module 211replaces one or more locations 623 a-623 f displaying the term “Policy”with the revised term “Cluster Policy” as inputted by the user, whichnow distinguishes the term “Policy” as defined by the core products usedby the user, with “Cluster Policy” of the software product beingaccessed and displayed by UI 219 in the example of FIG. 6C.

In some embodiments, users may share their modified term names and/ordefinitions of terms with other users of a software's community. A usermay accept or download the shared alterations or modifications todistinguish similar term names having different definitions, and uponselection of the shared term names or definitions, the UI modificationmodule 211 may propagate the changes across the UI 219 for each softwareproduct previously accessed by the user. In some embodiments, the UImodification module 211 may automatically adopt definitions and/ormodified term names and apply the modification to UI 219. The selectionmay be based on popularity or acceptance of the definitions for each ofthe software products amongst a community of users. The UI modificationmodule 211 may alert the user of the applied change to the terms and/ordefinitions, wherein the user may accept the applied changes or revertthe changes back to a previous definition or term name. In someinstance, the UI modification module 211 may use machine learning tocustomize changes to the terms displayed by the UI 219, based on thespecific patterns of the particular user's preferences to acceptchanges, apply modified terms or change definitions of terms to the UI219.

FIG. 6D, provides an example of alternative embodiment 630, wherein theUI modification module 211 automatically updates one or more terms of UI219 at locations 633 a-633 f. As shown, an alert 601 is generated andadded by the UI modification module 211 to UI 219. The generated alert601 may contain a notification message 603 describing the definition ofone or more terms and inform the user of the automatic revision of theterm to a revised term name that has been propagated across UI 219 forthe accessed software product. The user may indicate acceptance of therevised term name, keeping the modification to the UI 219 by the UImodification module 211 or cancel the automatic application of therevised term name, reverting the UI 219 back to the original UI 219 asshown in FIG. 6A. In this particular embodiment 630, the UI modificationmodule 211 has identified the currently accessed software productcontaining the term “policy” to have a different definition of “policy”than a core product using the same or substantially similar term. The UImodification module 211 has automatically applied a modification to UI219 changing “policy” to “cluster policy” and notifies the user via thenotification message 603, providing a user the opportunity to accept theapplication of the changes to the UI 219 or remove the changes.

Referring to the drawings, FIG. 2B depicts an alternative embodiment tothe computing environment 200 of FIG. 2A. As shown in FIG. 2B, thecomputing environment 220 differs from computing environment 200.Whereas in computing environment 200, the computing environment 200depicts a host computing system 201 providing the program functions andtasks of the disambiguation module 203 hosted by the host computingsystem 201 to the client systems 217 a-217 n; in computing environment220, the user computing devices 235 a-235 n may access and perform thefunctions or tasks of the disambiguation module 203 a-203 n. Moreover,in some embodiments of computing environment 220, one or more glossariesmay be stored to persistent storage 106 of the user computing device 235as a glossary database 215. In other instances, instead of the usercomputing device 235 storing the glossary database 215, anetwork-accessible repository 236 connected to network 250 may remotelystore the glossary database 215. In some instance, the glossary database215 may be shared amongst a plurality of user's accessing thenetwork-accessible repository 236.

Referring to FIG. 2C, another alternative embodiment of a computingenvironment 230 is shown. The computing environment 230 may differ fromthe computing environment 220, wherein instead of the user computingdevice 235 a-235 n directly performing the tasks or functions of thedisambiguation module 203, a separate disambiguation service provider237 may be providing disambiguation services and glossary databasingservices to the user computing devices 235 a-235 n over network 250. Forexample, the disambiguation services of the disambiguation serviceprovider 237 may be delivered as cloud native services to the users aspart of a private cloud, public cloud or as part of a hybrid cloudservice provider, integrating the private and public cloud softwareproducts being accessed from the private cloud service provider(s) 223and/or public cloud service provider(s) 227.

FIG. 7B depicts an example of an embodiment 720, describing a workflowthat may occur as a user 701 subsequently accesses an application orservice 703 b (or any other type of software product) at a future pointin time after previously accessing the application or service 703 b; forexample, as previously described above with regards to FIG. 7A. As shownby embodiment 720, user 701 accesses application or service 703 b.Disambiguation module 203, or a sub-module thereof may record and logthe amount of time spent accessing the application or service 703 b,validate the amount of time spent, and retrieve glossary from theglossary database 215 for the application or service 703 b beingaccessed by the user. The glossary module 209 may compare the amount oftime logged by application or service 703 b or any other availableinteractivity parameters that may be available as metrics fordetermining whether application or service 703 b would be considered acore product, against each of the other software products previouslyaccessed by the user 701. Examples of interactivity parameters mayinclude the length of time accessing application or service 703 b,frequency of access, default core products listed in the user profile orassigned based upon role, etc. In the example of FIG. 7B, length of timeis used as the interactivity parameter for identifying a core productversus a non-core product, however, any of the parameters foridentifying a core or non-core product may be used, including the amountof time a user has logged accessing the software product, the frequencyof software product's use, user-specific designation of the software asa core product, and/or based upon a user's designated role orexperience. Where application or service 703 b is the software producthaving the most amount of time logged by user 701 (or other parametersthat would indicate that the application or service 703 b is a coreproduct), the application or service 703 b is displayed to the user 701as part of the UI 219, unmodified.

As shown in embodiment 720, where application or service 703 b does nothave the most time logged by the user profile (or another parameter asdescribed above that would indicate the application or service 703 bbeing accessed by the user is designated as a core product), theglossary database 215 is searched for a glossary of the software producthaving the most time logged by the user (in this particular exampledepicted in FIG. 7B). In other embodiments, where one or more of theother parameters are used to determine whether the application orservice 703 b being accessed is a core product, the glossary database215 can be searched for a software product(s) that meet the selectedparameter(s) for being designated as a core product; for example, asoftware product used more frequently, user-designation(s) as a coreproduct and or designations as a core product based on a user's role orexperience. Upon identification of the software product with the mosttime logged (or other corresponding parameter that would indicate a coreproduct in the glossary database 215), the glossary module 209 maycompare the glossary of the core product with the glossary ofapplication or service 703 b, as described about the glossary module209, in detail above. Where the glossary module 209 identifies one ormore terms that overlap or differ in application or service 703 b fromthe core product, the glossary module 209 may indicate such differencesin definitions between similar terms to the UI modification module 211,which may determine one or more modifications, alerts or notificationsto present to the user 701 and/or apply to the UI 219 wherein saidmodifications, alerts, notifications, etc. are presented to the user toview, accept, deny and/or further modify.

Method for Alleviating User Interface Ambiguity Between Software

The drawings of FIG. 8A-8B represent embodiments of algorithms forimplementing computerized methods for alleviating ambiguity betweenterms and terminology used by a plurality of software products that maybe displayed using a single UI 219 experience in a computing environmentas described in accordance with FIGS. 2a-7b above, using one or morecomputing systems defined generically by computing system 100 of FIG. 1,and more specifically by the embodiments of specialized computer systemsdepicted in FIGS. 2a-7b and as described herein. A person skilled in theart should recognize that the steps of the method described in FIG.8A-8B, along with the methods of FIG. 9 and FIG. 10, may be performed ina different order than presented and may not require all the stepsdescribed herein to be performed. Rather, some embodiments may alter themethods by using one or more of the steps discussed below.

FIG. 8A presents a flowchart illustrating an algorithm 800 foralleviating ambiguity between the similar terms and terminologypresented by one or more software products displayed by a UI 219 andmodifying the UI 219, in accordance with the embodiments of the presentdisclosure. The embodiment of the algorithm 800 may begin at step 801.In step 801, A software application, program, service, workload or anyother type of software product may be accessed by a user. For example, auser may access the software product using a client system 217 (physicalor virtual) being hosted by a host computer system 201, and/or a usercomputer device 235 connected to network 250. The software productsbeing accessed by the user may be locally stored by the user computerdevice 235 or client system 217, made accessible to the client system217 by a host computer system 201, hosted by data center(s) 231connected to network 250, hosted by private cloud service provider(s)223 and/or hosted by public cloud service provider(s) 227, or any othertype of software provider, locally stored or made accessible remotelyover a computer network, including the Internet.

In step 803 of algorithm 800, a determination may be made whether thesoftware being accessed in step 801 is being accessed for the firsttime. If the software product being accessed in step 801 is not beingaccessed for the first time, the algorithm may proceed to step 813,otherwise, if the software product is being accessed for the first time,the algorithm may proceed to step 805. In step 805, the natural languageprocessing is used to extract terms and terminology of the softwareproduct being presented by the UI 219, including the terms orterminology of the software's content, data, metadata and/or associateddocumentation, such as official software operation manuals. In theexemplary embodiment, extraction of the data, metadata, documentationand content visually displayed by the UI 219 may be ingested by NLPmodule 207 and processed in accordance with the details described above.

In step 807, a network mapping of the accessed software product may begraphically generated. The graph of the network map may catalog theterms and terminology of the software product, the words displayed bythe UI 219 and/or multi-word expressions displayed by the softwareproduct via the UI 219. Moreover, the graph of the network mapcataloging the terms and terminology of the software product beingaccessed, may further map one or more relationships between terms andterminology of the software product and assign weightings to each of theterms in the graph of the network map. In step 809, a glossary of keyterms for the software product being accessed may be generated. The keyterms of the generated glossary may be assigned and prioritized based onfrequency of a term or terminology within the software productoccurring, prevalence of the term or terminology in officialdocumentation of the software product and/or the number of times theterms and terminology are displayed by the UI 219. In step 811, theglossary of key terms and terminology that is associated with thesoftware product may be stored as port of a repository, such as theglossary database 215 or network-accessible repository 236.

Referring to the drawings, FIG. 9 describes one or more intermediatesteps of steps 805, 807, 809 and 811 of algorithm 800 in more detail.Beginning with the extraction step 805, step 901 of algorithm 900provides an embodiment wherein the NLP module 207 ingests the metadata,user-viewable content displayed by the UI, official documentation and/orother data sources that may be available for the software product beingaccessed by the user. In step 903, the NLP module 207 may apply an NLPalgorithm that implements sentiment analysis to the ingested data andmetadata of step 901. The sentiment analysis applied by the NLPalgorithm may identify parts of speech from the ingested data andmetadata of step 901. In the exemplary embodiment, parts of speech maybe identified using a tokenization process.

In step 905, the NLP module 207 may filter the data and metadataingested by the NLP module by part of speech and in step 907 generatethe graph of the network mapping of the terms and words identified bythe NLP module in step 903. The NLP module 207 may generate the graph toinclude nodes and vertices, wherein one or more terms or words maycomprise a node of the graph being generated. In step 909, the NLPmodule 207 may insert one or more edges into the graph between terms andwords that have been identified as being within a threshold distance ofone another in the data or metadata ingested by the NLP module 207 instep 901. The threshold distance may be set by the NLP module 207, theuser, an administrator of the disambiguation module 203, a serviceprovider thereof, etc.

In step 911, the NLP module 207 may assign weights to each edge of thegraph being generated as part of the network mapping for the terms andwords processed by the NLP module 207. Embodiments of the NLP module mayassign the weights to each edge inserted into the graphs based on thefrequency of the relationships between the words and terms. For example,where a relationship between two or more words occurs more frequently aspart of the ingested data or metadata, an increased weight may beassigned to the edge between the two or more words in the generatedgraph. In step 913, the edges of the graph between the two or more wordsin the network map are scored and a preset number of the highest-rankingscores assigned to the vertices within the graph are identified as keyterms. In step 915, multi-word expressions within the graph may beidentified by the NLP module 207 wherein one or more of the top rankedvertices in step 913 are adjacent to one another within the graph.

Referring to FIG. 8A, upon storage of the glossary comprising the graphof the networking map for each of the terms and terminology of thesoftware product being accessed in step 811, the algorithm 800 mayproceed to step 813. During step 813, a determination is made whether auser accessing the software product interacts any further with thesoftware. If the user does not interact with the software product anyfurther, the algorithm 800 returns to step 801 and may proceed againupon a user accessing one or more software products. Conversely, wherethe user continues to interact with the software product being accessedfurther, the algorithm 800 may proceed to step 815. During step 815, theuser's interactions with the software product may be recorded andlogged. For example, to the user's profile. The user's activity,including one or more interactivity parameters may be recorded,including but not limited to the length of time a user interacts withthe software product, and frequency of the software product's use.

In step 817 of algorithm 800, the glossary module 209 may compare thedata describing one or more interactivity parameter collected duringstep 815 for the software product currently being accessed with the datacollected for each software application of the glossary database 215that has interactivity parameters collected. The comparison between theinteractivity parameters of the currently accessed software product andpreviously accessed software products may help determine whether thesoftware currently being accessed is a core product that is mostfamiliar to the user or not. In step 819, a determination is madewhether the current software product being accessed is a core productand/or most familiar to the user. If the determination is made that thesoftware product being accessed is a core product and/or software mostfamiliar to the user, the algorithm 800 may end and display the softwareproduct being accessed to the UI 219 in an unmodified state. Conversely,where the algorithm 800 determines in step 819 that the software beingaccessed by the user is not a core product and/or software that is mostfamiliar to the user, the algorithm 800 may proceed to step 821.

During step 821, the glossary module 209 may cross check the key termswithin the glossary of the software product currently being accessedwith the glossaries of previously accessed software products designatedas core products and/or software products considered to be most familiarto the user, to determine whether there are overlapping terms betweenthe software product being accessed and the core software productglossaries, comprising conflicting definitions. The algorithm 1000 ofFIG. 10 further elaborates and details methods for cross checking theglossaries in accordance with step 821.

During the cross-checking of the glossaries in step 821, for overlappingand conflicting terms, algorithm 1000 may begin at step 1001, whereinthe glossary module 209 may iteratively loop through the glossary of thesoftware product being accessed and each of the core product glossariesstored by glossary database 215. In step 1003, the glossary moduleidentifies one or more key terms within the glossary of the softwarebeing accessed that is the same or substantially similar to the keyterms in one or more core product glossaries. In step 1005, for each keyterm that is considered the same or similar but in different graphs ofthe separate glossaries, the glossary module 209 may extract a number of1^(st) degree neighboring nodes and the term names for each neighboringnode in the graph, for the terms identified as being the same or similarin step 1003. In step 1007, the glossary module may further extractrelative weights for each 1^(st) degree neighbor within the graph forthe key terms being compared.

In step 1009 of algorithm 1000, the key terms of the separate glossariesare compared to determine whether or not the key terms have differentmeanings. This comparison may be performed by comparing thehighest-weighted 1^(st) degree neighbor in the graphs for each of theterms being compared. In step 1011, a determination is made whether thevalue of the highest-weighted 1^(st) degree neighbor of the nodes forthe terms being compared is the same. If the nodes for the 1^(st) degreeneighbors with the highest value for each term are the same, then thealgorithm may proceed to step 1013, wherein the key terms being comparedare considered the same. otherwise, if in step 1011 the highest-weighted1^(st) degree neighbor for each key term is not the same for both termsbeing compared, then the algorithm may proceed to step 1015.

In step 1015 of algorithm 1000, the glossary module 209 may normalizethe weighted edge values of the terms of each graph being compared andcompute the cosine similarity for each of the key term nodes of thegraphs up to a selected number of degrees (D) of neighbors for each keyterm node. In step 1017, a determination is made whether for the keyterm nodes being compared, the cosine similarity between the nodes isgreater than a value V, wherein V is greater than 0 but less than 1. Ifthe cosine similarity for the key term nodes being compared is greaterthan the value for V, the algorithm proceeds to step 1013 and the keyterms being compared are considered to be the same. Conversely, wherethe cosine similarity for the key term nodes being compared is less thanthe value V, the algorithm proceeds to step 1019, wherein the key termsbeing compared are not considered to be the same term, and thus theterms may overlap in appearance but conflict in definition.

Returning back to algorithm 800, upon cross-checking the glossaries forthe key terms being compared, in step 823 a determination is madewhether the key terms that are compared between the graph of thesoftware product being accessed and the graph of the core productinclude overlapping nodes for terms that appear the same but compriseconflicting definitions. If as a result of running algorithm 1000 aspart of step 821 determines that the key terms being compared are thesame, the algorithm 800 may proceed from step 823 to step 825 anddisplay the UI 219 in an unmodified state. Conversely, where during step821, the cross-checking of the glossaries per algorithm 1000 revealsthat the key terms being compared are overlapping and/or conflicting indefinition, the algorithm 800 may proceed to step 829.

In step 829, the UI modification module 211 may modify the UI 219 of thesoftware product being accessed. The modifications to the UI 219 mayinclude the insertion of one or more alerts and/or decoration of the UI219 to indicate the presence of the overlapping and/or conflicting keyterms. In step 831 the UI 219 displays the modified UI of the currentlyaccessed software to the user. The modified UI being displayed caninclude the alerts and/or decoration that alter the UI 219, providing anindication and/or explanation of the overlapping or conflicting terms orterminology among the glossaries of the current software being accessedand the one or more core products having the same or substantiallysimilar terms with different definitions or meanings.

In step 833, the display of the modified UI may alert and draw theuser's attention to the overlapping and/or conflicting terms. In someembodiments the user may provide additional feedback and/or furthermodify the UI 219. For example, adjudicating or accepting definitions ofterms, revising term names and/or accepting or declining automated termsname revisions presented by the UI modification module 211. In step 835,a determination may be made whether or not the alerts and/ormodifications of the UI 219 by the user in step 833 results in userinput or additional modifications to the UI 219 requested by the user.If in step 835, the user has submitted user input or additionalmodifications to the modified UI 219, the algorithm 800 may return tostep 829, wherein the UI modification module 211 may further modify theUI 219 based on the feedback and input from the user. If, on the otherhand, in step 835, the user does not provide additional feedback such asuser input or additional modifications that would further modify the UI219, the algorithm may end.

What is claimed is:
 1. A computer-implemented method comprising thesteps of: accessing, by a processor, software; extracting, by theprocessor, one or more terms displayed as part of a user interface (UI)of the software, using natural language processing (NLP); generating, bythe processor, a network map cataloging the one or more terms andrelationships among the one or more terms; building, by the processor, aglossary of the one or more terms from the network map; cross-checking,by the processor, a glossary of previously accessed software with theglossary of the one or more terms to identify one or more overlappingterms, wherein the one or more overlapping terms have differentmeanings; and modifying, by the processor, the UI to indicate a presenceof the one or more overlapping terms being displayed by the UI andalerting a user of the different meanings among the overlapping terms.2. The computer-implemented method of claim 1, further comprising:recording, by the processor, interactivity data comprising one or moreinteractivity parameters; comparing, by the processor, the interactivitydata for the software with interactivity data of the previously accessedsoftware; and in response to comparing the interactivity data,determining, by the processor, that an interactivity level of one ormore of the previously accessed software is greater than aninteractivity level of the software being accessed.
 3. Thecomputer-implemented method of claim 1, wherein building the glossaryfurther comprises: generating, by the processor, a graph mapping the oneor more terms as nodes and vertices of the graph; inserting, by theprocessor, an edge into the graph between the one or more terms thatoccur within a threshold distance between one another; assigning, by theprocessor, weights to each edge inserted into the graph based on afrequency of relationships among the one or more terms; scoring, by theprocessor, each edge between the one or more terms; and selecting, bythe processor, a preset number of vertices connected to edges having ahighest score within the graph as key terms of the glossary.
 4. Thecomputer-implemented method of claim 1, wherein the extracting of theone or more terms comprises: ingesting, by the processor, one or more ofmetadata, user-viewable content and documentation associated with thesoftware being accessed by an NLP processor; and applying, by theprocessor, sentiment analysis by an NLP algorithm, said sentimentanalysis configured to identify parts of speech and the one or moreterms from the metadata, the user-viewable content and the documentationingested by the NLP processor, using tokenization.
 5. Thecomputer-implemented method of claim 1, wherein the identifying of oneor more overlapping terms within the glossary of the previously accessedsoftware and the glossary of the one or more terms of the software beingaccessed, further comprises: iteratively looping through the glossary ofthe previously accessed software, searching for matching terms indifferent network maps; identifying a node for the matching terms ineach network map; extracting from the node for each of the matchingterms a number of 1^(st) degree neighbors in the network map, term namesof the 1^(st) degree neighbors and relative weight of each edge of the1^(st) degree neighbors; and comparing highest weighted 1^(st) degreeneighbors of the matching terms, wherein, where values of the highestweighted 1^(st) degree neighbors from different network maps are equal,the matching terms are the same.
 6. The computer-implemented method ofclaim 5, further comprising: wherein the highest weighted 1^(st) degreeneighbors from the different network maps are not equal, normalizing therelative weight of each edge of the 1^(st) degree neighbors; andcalculating cosine similarity of nodes for each of the matching terms,wherein where the cosine similarity of the nodes for the matching termsare a value between 0 and 1, the matching terms are considered the same,otherwise the matching terms are not the same.
 7. Thecomputer-implemented method of claim 1, wherein modifying, by theprocessor, UI further comprises: automatically renaming or re-definingthe overlapping terms displayed by the UI; or inputting, into an inputelement re-named or re-defined overlapping terms and substituting one ormore of the overlapping terms on the UI with the re-named or re-definedoverlapping terms inputted into the input element.
 8. A computer systemcomprising: a processor; and a computer-readable storage media coupledto the processor, wherein the computer-readable storage media containsprogram instructions executing a computer-implemented method comprisingthe steps of: accessing, by the processor, software; extracting, by theprocessor, one or more terms displayed as part of a user interface (UI)of the software, using natural language processing (NLP); generating, bythe processor, a network map cataloging the one or more terms andrelationships among the one or more terms; building, by the processor, aglossary of the one or more terms from the network map; cross-checking,by the processor, a glossary of previously accessed software with theglossary of the one or more terms to identify one or more overlappingterms, wherein the one or more overlapping terms have differentmeanings; and modifying, by the processor, UI to indicate a presence ofthe one or more overlapping terms being displayed by the UI and alertinga user of the different meanings among the overlapping terms.
 9. Thecomputer system of claim 8, wherein modifying, by the processor, the UIfurther comprises: automatically renaming or re-defining the overlappingterms displayed by the UI; or inputting, into an input element, re-namedor re-defined overlapping terms and substituting one or more of theoverlapping terms on the UI with the re-named or re-defined overlappingterms inputted into the input element.
 10. The computer system of claim8, wherein building the glossary further comprises: generating, by theprocessor, a graph mapping the one or more terms as nodes and verticesof the graph; inserting, by the processor, an edge into the graphbetween the one or more terms that occur within a threshold distancebetween one another; assigning, by the processor, weights to each edgeinserted into the graph based on a frequency of relationships among theone or more terms; scoring, by the processor, each edge between the oneor more terms; and selecting, by the processor, a preset number ofvertices connected to edges having a highest score within the graph askey terms of the glossary.
 11. The computer system of claim 8, whereinthe extracting of the one or more terms comprises: ingesting, by theprocessor, one or more of metadata, user-viewable content anddocumentation associated with the software being accessed by an NLPprocessor; and applying, by the processor, sentiment analysis by an NLPalgorithm, said sentiment analysis configured to identify parts ofspeech and the one or more terms from the metadata, the user-viewablecontent and the documentation ingested by the NLP processor, usingtokenization.
 12. The computer system of claim 8, wherein theidentifying of one or more overlapping terms within the glossary of thepreviously accessed software and the glossary of the one or more termsof the software being accessed, further comprises: iteratively loopingthrough the glossary of the previously accessed software, searching formatching terms in different network maps; identifying a node for thematching terms in each network map; extracting from the node for each ofthe matching terms a number of 1^(st) degree neighbors in the networkmap, term names of the 1^(st) degree neighbors and relative weight ofeach edge of the 1^(st) degree neighbors; and comparing highest weighted1^(st) degree neighbors of the matching terms, wherein, where values ofthe highest weighted 1^(st) degree neighbors from different network mapsare equal, the matching terms are the same.
 13. The computer system ofclaim 12, further comprising: wherein the highest weighted 1^(st) degreeneighbors from the different network maps are not equal, normalizing therelative weight of each edge of the 1^(st) degree neighbors; andcalculating cosine similarity of nodes for each of the matching terms,wherein where the cosine similarity of the nodes for the matching termsare a value between 0 and 1, the matching terms are considered the same,otherwise the matching terms are not the same.
 14. A computer programproduct comprising: one or more computer readable storage media havingcomputer-readable program instructions stored on the one or morecomputer readable storage media, said program instructions executes acomputer-implemented method comprising the steps of: accessing, by aprocessor, software; extracting, by the processor, one or more termsdisplayed as part of a user interface (UI) of the software, usingnatural language processing (NLP); generating, by the processor, anetwork map cataloging the one or more terms and relationships among theone or more terms; building, by the processor, a glossary of the one ormore terms from the network map; cross-checking, by the processor, aglossary of the previously accessed software with the glossary of theone or more terms to identify one or more overlapping terms, wherein theone or more overlapping terms have different meanings; and modifying, bythe processor, the UI to indicate a presence of the one or moreoverlapping terms being displayed by the UI and alerting a user of thedifferent meanings among the overlapping terms.
 15. The computer programproduct of claim 14 further comprising: recording, by the processor,interactivity data comprising one or more interactivity parameters;comparing, by the processor, the interactivity data for the softwarewith interactivity data of the previously accessed software; and inresponse to comparing the interactivity data, determining, by theprocessor, that an interactivity level of one or more of the previouslyaccessed software is greater than an interactivity level of the softwarebeing accessed.
 16. The computer program product of claim 14, whereinbuilding the glossary further comprises: generating, by the processor, agraph mapping the one or more terms as nodes and vertices of the graph;inserting, by the processor, an edge into the graph between the one ormore terms that occur within a threshold distance between one another;assigning, by the processor, weights to each edge inserted into thegraph based on a frequency of relationships among the one or more terms;scoring, by the processor, each edge between the one or more terms; andselecting, by the processor, a preset number of vertices connected toedges having a highest score within the graph as key terms of theglossary.
 17. The computer program product of claim 14, wherein theextracting of the one or more terms comprises: ingesting, by theprocessor, one or more of metadata, user-viewable content anddocumentation associated with the software being accessed by an NLPprocessor; and applying, by the processor, sentiment analysis by an NLPalgorithm, said sentiment analysis configured to identify parts ofspeech and the one or more terms from the metadata, the user-viewablecontent and the documentation ingested by the NLP processor, usingtokenization.
 18. The computer program product of claim 14, wherein theidentifying of one or more overlapping terms within the glossary of thepreviously accessed software and the glossary of the one or more termsof the software being accessed, further comprises: iteratively loopingthrough the glossary of the previously accessed software that has theinteractivity level greater than the software being accessed, searchingfor matching terms in different network maps; identifying a node for thematching terms in each network map; extracting from the node for each ofthe matching terms a number of 1^(st) degree neighbors in the networkmap, term names of the 1^(st) degree neighbors and relative weight ofeach edge of the 1^(st) degree neighbors; and comparing highest weighted1^(st) degree neighbors of the matching terms, wherein, where values ofthe highest weighted 1^(st) degree neighbors from different network mapsare equal, the matching terms are the same.
 19. The computer programproduct of claim 18, further comprising: wherein the highest weighted1^(st) degree neighbors from the different network maps are not equal,normalizing the relative weight of each edge of the 1^(st) degreeneighbors; and calculating cosine similarity of nodes for each of thematching terms, wherein where the cosine similarity of the nodes for thematching terms are a value between 0 and 1, the matching terms areconsidered the same, otherwise the matching terms are not the same. 20.The computer program product of claim 14, wherein modifying, by theprocessor, the UI further comprises: automatically renaming orre-defining the overlapping terms displayed by the UI; or inputting,into an input element, re-named or re-defined overlapping terms, andsubstituting one or more of the overlapping terms on the UI with there-named or re-defined overlapping terms inputted into the inputelement.